/*
 * @Author: LVGRAPE
 * @LastEditors: LVGRAPE
 */

/*!这个文件是为了方便不打开Mixly时，也可以编译需要的程序，只需在makefile 那时定义 USEMAKEFILE */
#ifdef USEMAKEFILE

#include "Arduino.h"

#ifdef HeartOfMecha
void setup()
{
// #ifdef E_ZINO_FOOTBALL_SUIT
//     LOAD_ZINO_CAR_EQUIPMENT(__ZINO_FOOTBALL_SUIT);
// #endif

// #ifdef E_ZINO_8mm_WATAR_BULLET_TURRET
//     LOAD_ZINO_CAR_EQUIPMENT(__ZINO_8mm_WATAR_BULLET_TURRET);
// #endif

// #ifdef E_ZINO_AllInOne
//     LOAD_ZINO_CAR_EQUIPMENT(__ZINO_ALL_IN_ONE);
// #endif
    RC_CTRL_USING(CTRL_USING_ALL);
    // zino_init_car();
    extern void init_mecha(void);
    init_mecha();
}

void loop()
{
    extern void run_mecha(void);
    run_mecha();
}
#endif

#ifdef ZINO_TEST

#if defined(SERVO_TEST)

extern void footballSuitServoTestInit();
extern void footballSuitServoTest(void);

void setup()
{
    LOAD_ZINO_CAR_EQUIPMENT(__ZINO_8mm_WATAR_BULLET_TURRET);
    footballSuitServoTestInit();
}
void loop()
{
    footballSuitServoTest();
}
#elif defined(SOFT_IIC_TEST)
extern void soft_i2c_16bits_test_init();
extern void soft_i2c_16bits_test(void);
void setup()
{
    soft_i2c_16bits_test_init();
}
void loop()
{
    soft_i2c_16bits_test();
}
// #else

// void setup()
// {
//     LOAD_ZINO_CAR_EQUIPMENT(__ZINO_8mm_WATAR_BULLET_TURRET);
//     RC_CTRL_USING(CTRL_USING_BOTH);
//     zino_init_car();
//     Init_ExpandPort_All();
//     soft_i2c_scan_device();
// }
// void loop()
// {
//     runFactoryTest();
// }

#elif defined(LF_TEST)
extern 	void lf_test_init();
extern void lf_test_loop();
#elif defined(Excavators_TEST)
void setup()
{
    RC_CTRL_USING(CTRL_USING_STICK);
    // LOAD_ZINO_CAR_EQUIPMENT(__ZINO_Excavator_SUIT);
    // extern void init_mecha(void);
    // init_mecha();
    zino_init_Excavator();
}

void loop()
{
    // extern void run_mecha(void);
    // run_mecha();
    // if (zinoCommonRcData.values.buttom.RU)
    // {
    //     main_motor_port_output(MAIN_MOTOR_1, 1000);
    // }
    // if (zinoCommonRcData.values.buttom.RD)
    // {
    //     main_motor_port_output(MAIN_MOTOR_1, (-1000));
    // }
    // if (zinoCommonRcData.values.buttom.LU)
    // {
    //     main_motor_port_output(MAIN_MOTOR_4, 1000);
    // }
    // if (zinoCommonRcData.values.buttom.LD)
    // {
    //     main_motor_port_output(MAIN_MOTOR_4, (-1000));
    // }
    Car_Run();
}
#else

void setup()
{
    lf_test_init();
}
void loop()
{
    lf_test_loop();
}

#endif

#endif

#ifdef WingOfSky
void setup()
{
    zino_init_drone();
}

void loop()
{
    run_drone();
}

#endif // WingOfSky

#ifdef Excavator
void setup()
{
    LOAD_ZINO_CAR_EQUIPMENT(__ZINO_NONE);
    RC_CTRL_USING(CTRL_USING_STICK);
    zino_init_Excavator();
}
void loop()
{
    Excavators_Run();
}
#endif

#ifdef ZINO_OTHER

#ifdef BL_30NZ_485_TEST
void setup()
{
    zino_init();
    TMR9_INIT_FOR_LED_IP5306();
    Serial_Begin(&serialHandle[serial1], 115200);
}

void loop()
{
    bl30nz485_test();
}
#endif //BL_30NZ_485_TEST

#ifdef UART_RFID

extern void UART_RFID_Init(void);
extern void UART_RFID_Task();

void setup(){
    UART_RFID_Init();
}
void loop(){
    UART_RFID_Task();
}
#endif //UART_RFID

#ifdef NRF_MASTER_TSET
void setup(){
    nrf_master_init();
}
void loop(){
    nrf_master_task();
}
#endif // NRF_MASTER_TSET

#ifdef NRF_BROADCAST
void setup(){
    nrf_broadcast_init();
}
void loop(){
    nrf_broadcast_task();
}
#endif // NRF_BROADCAST

#ifdef REBEL_BASE
void setup(){
    rebelbase_init();
}
void loop(){
    reble_base_v2();
}
#endif // REBEL_BASE

#ifdef MOTIONSENSORRC
void setup(){
    motionsensorrc_init();
}
void loop(){
    motionsensorrc_loop();
}
#endif

#endif //ZINO_OTHER


#endif // USEMAKEFILE